Как найти переменную php

поищите еще в яваскрипт
если идет аякс обработка, без перезагрузки страницы — то скорее всего, там зашита фраза

и еще есть поиск по содержимому файлов, можно его задействовать чтобы найти фразу

  • SamFlynn

    я через Brackets делал поиск по файлам на фразу по всей папке плагина. Где он нашел там всё поменял. Перезагрузки страницы нет. Плагин размещён на правом сайдбаре.

  • Денис Николаев: visual-form-builder.php
    в этом файле на строке 879 поменяли?

  • SamFlynn

    Да. было заменено: ‘form_success_message’ => ‘Ваш заказ принят. Наши менеджеры свяжатся с Вами в ближайшее время.’

  • SamFlynn

    270: $default_text = sprintf( ‘%s’, __( ‘Ваш заказ принят. Наши менеджеры свяжатся с Вами в ближайшее время.’ , ‘visual-form-builder’) );
    Так же было изменено.

  • Денис Николаев:
    в файле
    строки 110 11
    msgid «Your form was successfully submitted. Thank you for contacting us.»
    msgstr «»

    в msgstr можете вписать перевод
    msgid оставляете без изменений

    а перед этим вопрос. Вы кеш чистили?
    Если используете кеширующие плагины. то после каждого изменения нужно чистить кеш

  • SamFlynn

    в файле
    строки 110 11
    Какое название файла?

  • SamFlynn

  • SamFlynn

    тоже самое. я просто поставлю другой плагин наверное и всё. спасибо за попытку помочь.

  • SamFlynn

    но если будут идеи пиши я их испытаю =)

Установил на сайт платный шаблон Лайтшоп, возникла необходимость изменить нумерацию заказа. Она начинается с единицы, хочу задать свое значение. В шаблоне очень много файлом, знаю php совсем поверхностно, поэтому очень трудно найти нужный файл и строку, где можно сделать изменения. Уже понял как называется сама переменная. Пытался найти нужный файл путем поиска по названию переменной. Нашел около сотни файлов, в какой не смотрел, переменная там не объвляется. Есть ли какой-то способ изменить нужную переменную с моими знаниями php? Буду рад любому совету.

задан 9 фев 2018 в 12:32

rbzone402's user avatar

3

Сейчас скачал опенкарт, посмотрел структуру, скорее всего номер заказа это invoice_no в таблице oc_order

файл adminmodelsaleorder.php

кусок кода

if ($order_info && !$order_info['invoice_no']) {
        $query = $this->db->query("SELECT MAX(invoice_no) AS invoice_no FROM `" . DB_PREFIX . "order` WHERE invoice_prefix = '" . $this->db->escape($order_info['invoice_prefix']) . "'");

        if ($query->row['invoice_no']) {
            $invoice_no = $query->row['invoice_no'] + 1;
        } else {
            $invoice_no = 1;
        }

        $this->db->query("UPDATE `" . DB_PREFIX . "order` SET invoice_no = '" . (int)$invoice_no . "', invoice_prefix = '" . $this->db->escape($order_info['invoice_prefix']) . "' WHERE order_id = '" . (int)$order_id . "'");

        return $order_info['invoice_prefix'] . $invoice_no;
    }

если имели ввиду не сам номер заказа а префикс, то он это invoice_prefix настраивается в конфиге сайта

ответ дан 9 фев 2018 в 14:28

Denis Startsev's user avatar

Denis StartsevDenis Startsev

1,2611 золотой знак8 серебряных знаков14 бронзовых знаков

(PHP 4, PHP 5, PHP 7, PHP 8)

in_arrayПроверяет, присутствует ли в массиве значение

Описание

in_array(mixed $needle, array $haystack, bool $strict = false): bool

Список параметров

needle

Искомое значение.

Замечание:

Если needle — строка, сравнение
будет произведено с учётом регистра.

haystack

Массив.

strict

Если третий параметр strict установлен в
true, тогда функция in_array()
также проверит соответствие типов
параметра needle и соответствующего
значения массива haystack.

Замечание:

До PHP 8.0.0 строковое значение параметра needle
будет соответствовать значению массива 0 в нестрогом режиме, и наоборот.
Это может привести к нежелательным результатам. Подобные крайние случаи существуют и для других типов.
Если нет полной уверенности в типах значений,
всегда используйте флаг strict, чтобы избежать неожиданного поведения.

Возвращаемые значения

Возвращает true, если needle был найден
в массиве, и false в противном случае.

Примеры

Пример #1 Пример использования in_array()


<?php
$os
= array("Mac", "NT", "Irix", "Linux");
if (
in_array("Irix", $os)) {
echo
"Нашёл Irix";
}
if (
in_array("mac", $os)) {
echo
"Нашёл mac";
}
?>

Второго совпадения не будет, потому что in_array()
регистрозависима, таким образом, программа выведет:

Пример #2 Пример использования in_array() с параметром strict


<?php
$a
= array('1.10', 12.4, 1.13);

if (

in_array('12.4', $a, true)) {
echo
"'12.4' найдено со строгой проверкойn";
}

if (

in_array(1.13, $a, true)) {
echo
"1.13 найдено со строгой проверкойn";
}
?>

Результат выполнения данного примера:

1.13 найдено со строгой проверкой

Пример #3 Пример использования in_array() с массивом в качестве параметра needle


<?php
$a
= array(array('p', 'h'), array('p', 'r'), 'o');

if (

in_array(array('p', 'h'), $a)) {
echo
"'ph' найденоn";
}

if (

in_array(array('f', 'i'), $a)) {
echo
"'fi' найденоn";
}

if (

in_array('o', $a)) {
echo
"'o' найденоn";
}
?>

Результат выполнения данного примера:

Смотрите также

  • array_search() — Осуществляет поиск данного значения в массиве и возвращает
    ключ первого найденного элемента в случае успешного выполнения
  • isset() — Определяет, была ли установлена переменная значением, отличным от null
  • array_key_exists() — Проверяет, присутствует ли в массиве указанный ключ или индекс

beingmrkenny at gmail dot com

11 years ago


Loose checking returns some crazy, counter-intuitive results when used with certain arrays. It is completely correct behaviour, due to PHP's leniency on variable types, but in "real-life" is almost useless.

The solution is to use the strict checking option.

<?php// Example array$array = array(
   
'egg' => true,
   
'cheese' => false,
   
'hair' => 765,
   
'goblins' => null,
   
'ogres' => 'no ogres allowed in this array'
);// Loose checking -- return values are in comments

// First three make sense, last four do not

in_array(null, $array); // true
in_array(false, $array); // true
in_array(765, $array); // true
in_array(763, $array); // true
in_array('egg', $array); // true
in_array('hhh', $array); // true
in_array(array(), $array); // true

// Strict checking

in_array(null, $array, true); // true
in_array(false, $array, true); // true
in_array(765, $array, true); // true
in_array(763, $array, true); // false
in_array('egg', $array, true); // false
in_array('hhh', $array, true); // false
in_array(array(), $array, true); // false?>


leonhard dot radonic+phpnet at gmail dot com

6 months ago


I got an unexpected behavior working with in_array. I'm using following code:

<?php
// ...
$someId = getSomeId(); // it gets generated/fetched by another service, so I don't know what value it will have. P.S.: it's an integer

// The actual data in my edge-case scenario:
// $someId = 0;
// $anyArray = ['dataOne', 'dataTwo'];

if (in_array($someId, $anyArray)) {
   
// do some work
}
// ...
?>

With PHP7.4, in_array returns boolean true.
With PHP8.1, in_array returns boolean false.

It took me quite some time to find out what's going on.


rhill at xenu-directory dot net

14 years ago


I found out that in_array will *not* find an associative array within a haystack of associative arrays in strict mode if the keys were not generated in the *same order*:

<?php

$needle

= array(
   
'fruit'=>'banana', 'vegetable'=>'carrot'
   
);$haystack = array(
    array(
'vegetable'=>'carrot', 'fruit'=>'banana'),
    array(
'fruit'=>'apple', 'vegetable'=>'celery')
    );

echo

in_array($needle, $haystack, true) ? 'true' : 'false';
// Output is 'false'echo in_array($needle, $haystack) ? 'true' : 'false';
// Output is 'true'?>

I had wrongly assumed the order of the items in an associative array were irrelevant, regardless of whether 'strict' is TRUE or FALSE: The order is irrelevant *only* if not in strict mode.


Armands Rieksti

3 months ago


I'd like to point out that, if you're using Enum data structures and want to compare whether an array of strings has a certain string Enum in it, you need to cast it to a string.

From what I've tested, the function works correctly:
if the array is filled with strings and you're searching for a string;
if the array is filled with Enums and you're searching for an Enum.


Anonymous

6 months ago


$a = new StdClass();
$b = new StdClass();

// Expected: false, got: true
var_dump(in_array($a, [$b]));
// bool(true)

// Works fine
var_dump(in_array($a, [$b], true));
// bool(false)


thomas dot sahlin at gmail dot com

13 years ago


If you're creating an array yourself and then using in_array to search it, consider setting the keys of the array and using isset instead since it's much faster.

<?php

$slow

= array('apple', 'banana', 'orange');

if (

in_array('banana', $slow))
    print(
'Found it!');$fast = array('apple' => 'apple', 'banana' => 'banana', 'orange' => 'orange');

if (isset(

$fast['banana']))
    print(
'Found it!');?>


Anonymous

6 months ago


$a = new StdClass();
$b = new StdClass();

// Expected: false, got: true
var_dump(in_array($a, [$b]));
// bool(true)

// Works fine
var_dump(in_array($a, [$b], true));
// bool(false)


The isset() function does not check if a variable is defined.

It seems you’ve specifically stated that you’re not looking for isset() in the question. I don’t know why there are so many answers stating that isset() is the way to go, or why the accepted answer states that as well.

It’s important to realize in programming that null is something. I don’t know why it was decided that isset() would return false if the value is null.

To check if a variable is undefined you will have to check if the variable is in the list of defined variables, using get_defined_vars(). There is no equivalent to JavaScript’s undefined (which is what was shown in the question, no jQuery being used there).

In the following example it will work the same way as JavaScript’s undefined check.

$isset = isset($variable);
var_dump($isset); // false

But in this example, it won’t work like JavaScript’s undefined check.

$variable = null;
$isset = isset($variable);
var_dump($isset); // false

$variable is being defined as null, but the isset() call still fails.

So how do you actually check if a variable is defined? You check the defined variables.

Using get_defined_vars() will return an associative array with keys as variable names and values as the variable values. We still can’t use isset(get_defined_vars()['variable']) here because the key could exist and the value still be null, so we have to use array_key_exists('variable', get_defined_vars()).

$variable = null;
$isset = array_key_exists('variable', get_defined_vars());
var_dump($isset); // true


$isset = array_key_exists('otherVariable', get_defined_vars());
var_dump($isset); // false

However, if you’re finding that in your code you have to check for whether a variable has been defined or not, then you’re likely doing something wrong. This is my personal belief as to why the core PHP developers left isset() to return false when something is null.

Marinka92

11 / 11 / 3

Регистрация: 19.04.2014

Сообщений: 139

1

02.01.2016, 17:44. Показов 1360. Ответов 12

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

С Новым Годом!

Подскажите пожалуйста как правильно сделать проверку php файла на наличие указанных переменных.

Есть файл php в котором хранятся переменные:

PHP
1
2
3
4
5
6
7
8
9
<?php
 
$aaa = 'Happy';
$bbb = 'New';
...
...
$zzz = 'Year';
 
?>

Нужна функция которая будет проверять наличие всех заданных переменных

PHP
1
2
3
function check($filename, '$aaa,$zzz') {
...
}

и только если все указанные переменные есть в файле возвращать true, а если хотя-бы одной из них нет — false

Читать в строку $string и использовать preg_match? Что-то типа:

PHP
1
preg_match('/(aaa|zzz)/i',$string);



1



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

02.01.2016, 17:44

12

Azdeman

Фрилансер

Эксперт JSЭксперт HTML/CSSЭксперт PHP

1846 / 1342 / 599

Регистрация: 12.01.2011

Сообщений: 5,431

02.01.2016, 19:30

2

Может чуток и не понял задачу.

PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
$aaa = 'Happy';
$bbb = 'New';
$zzz = 'Year';
        function check($aaa,$bbb,$zzz) {
                if(isset($aaa,$bbb,$zzz)){
                    return true;
                }else return false;
        }
echo check($aaa,$bbb,$zzz);
?>

Или

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$aaa = 'Happy';
$bbb = 'New';
$zzz = 'Year';
        function check() {
            global $aaa;
            global $bbb;
            global $zzz;
                if(isset($aaa,$bbb,$zzz)){
                    return true;
                }else return false;
        }
echo check();
?>



1



Marinka92

11 / 11 / 3

Регистрация: 19.04.2014

Сообщений: 139

02.01.2016, 19:42

 [ТС]

3

Azdeman, переменные находятся в другом файле… данные из него берутся через fread()… мне нужно чтобы в качестве аргументов функции можно было указывать имя файла и список переменных, наличие которых в этом файле нужно проверить…

аналогично: есть текстовый файл с некоторой строкой и при помощи функции нужно проверить содержит ли эта строка слова из определённого списка… тоесть:

PHP
1
function check($file, 'ресторан, водка, асфальт')

вот как-то так… сама с кодом ещё не экспериментировала, хотелось услышать мнение тех, кто сталкивался с решением подобных задач…



1



Azdeman

Фрилансер

Эксперт JSЭксперт HTML/CSSЭксперт PHP

1846 / 1342 / 599

Регистрация: 12.01.2011

Сообщений: 5,431

02.01.2016, 19:49

4

Ну тогда например в вашем файле есть aaa или zzz строки Тогда подойдет регулярка

Цитата
Сообщение от Marinka92
Посмотреть сообщение

preg_match(‘/(aaa|zzz)/i’,$string);

PHP
1
2
3
4
5
   function check($file) { 
 if (preg_match('~(aaa|zzz)~i',$file)){
    return true;
}else return false 
}



1



61 / 39 / 20

Регистрация: 06.12.2015

Сообщений: 155

02.01.2016, 21:18

5

Ну, я тоже так подумал что нужно сначала весь файл функцией fread() прочитать в строку, а потом функцией preg_match() найти все вхождения переменных в эту строку.
Скажите, пожалуйста, что означают конструкции:
/(aaa|zzz)/i и
~(aaa|zzz)~i?



1



Фрилансер

Эксперт JSЭксперт HTML/CSSЭксперт PHP

1846 / 1342 / 599

Регистрация: 12.01.2011

Сообщений: 5,431

02.01.2016, 21:27

6

Цитата
Сообщение от Goga5
Посмотреть сообщение

Скажите, пожалуйста, что означают конструкции:

проверяет есть ли в файле строки aaa или zzz если одно из них есть или они оба есть в файле то true иначе false.
Регулярные выражения.



1



11 / 11 / 3

Регистрация: 19.04.2014

Сообщений: 139

03.01.2016, 10:26

 [ТС]

7

Azdeman, этим путём я и пошла, только true в таком случае выдаёт если хоть одна из переменных есть, а нужно чтобы выдавало true только если есть все указанные переменные…

мысли такие: preg_match оберну в цикл и буду искать по одной переменной, если искомая переменная найдена то к переменной $found плюсуем единицу, затем проверяем равно ли значение $found количеству искомых переменных, и отсюда уже true false…

Хотелось бы узнать мнение специалистов, потому что я сама ещё в php не особо разбираюсь…



1



Jewbacabra

Эксперт PHP

4845 / 3857 / 1599

Регистрация: 24.04.2014

Сообщений: 11,316

03.01.2016, 12:37

8

Marinka92, а если такая ситуация:

PHP
1
2
3
4
// vars.php
$var1 = '$var2';
// --------------
check('vars.php', '$var1,$var2'); // что должно вернуть?

или если имя переменной динамическое?

PHP
1
2
3
// vars.php
$var1 = 'var2';
$$var1 = 123;

А если есть класс?

PHP
1
2
3
4
5
6
// vars.php
class Foo {
    private $bar;
}
// ----------
check('vars.php', '$bar'); // тут какой должен быть результат? Переменной $bar то нет

И переменные в какой области видимости проверять?
Регулярными выражениями тут обойтись не удастся,

нужен полноценный анализатор

. Мне кажется что ты делаешь какой-то велосипед, и решение уже давно придумано, и оно гораздо проще.



1



Marinka92

11 / 11 / 3

Регистрация: 19.04.2014

Сообщений: 139

05.01.2016, 20:13

 [ТС]

9

Jewbacabra, всё не так страшно…

все переменные имеют следующий формат:

PHP
1
2
$page_name = 'Китайская ёлка';
$page_description = 'Ёлка китайская, хорошее качество, слегка перекошенный вид, от недостатков гостей отвлекает едкий формальдегид...';

В общем эта функция пугает больше чем фраза математички «Сегодня на уроке будем изучать квадратный трёхчлен»…



1



Jewbacabra

Эксперт PHP

4845 / 3857 / 1599

Регистрация: 24.04.2014

Сообщений: 11,316

05.01.2016, 21:25

10

Marinka92, в таком случае достаточно заинклюдить файл, и проверить через isset наличие переменных.
Но это далеко не самое лучшее решение.
Создается файл с содержанием вида:

PHP
1
2
3
4
5
6
<?php
// params.php
return [
    'page_name' => 'name',
    'page_description' => 'description'
];

И получить значения параметров:

PHP
1
2
3
<?php
$params = include 'params.php';
var_dump('params');



1



Goga5

61 / 39 / 20

Регистрация: 06.12.2015

Сообщений: 155

06.01.2016, 13:12

11

Немогу понять, у меня компилятор тупит.

PHP
1
2
3
4
5
6
7
foreach($strings as $testcase){
    if(ctype_digit($testcase))
        echo "<BR>String +$testcase+ has only digits.";
    else
        echo "<BR>String +$testcase+ has not only digits.";}
//Получает содержимое файла в строку
$filename = 'Text.txt';

Строка $filename = ‘Text.txt’; — это 175 строка. Интерпретатор генерирует ошибку:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in Z:homelocalhostwwwTableindex.html on line 175.
Ну как дальше работать?



1



162 / 161 / 66

Регистрация: 28.06.2015

Сообщений: 576

06.01.2016, 15:06

12

Цитата
Сообщение от Goga5
Посмотреть сообщение

Немогу понять, у меня компилятор тупит….

Скажите а как это относиться к данной теме?
Если это отдельный вопрос, создайте новую тему.

Цитата
Сообщение от Goga5
Посмотреть сообщение

Строка $filename = ‘Text.txt’; — это 175 строка. Интерпретатор генерирует ошибку:

P.S. и вы уж определитесь у вас компилируемый PHP или интерпритируемый



1



Emilien

1049 / 654 / 393

Регистрация: 07.11.2015

Сообщений: 1,048

12.01.2016, 02:12

13

Цитата
Сообщение от Marinka92
Посмотреть сообщение

Есть файл php в котором хранятся переменные:

PHP
1
2
3
4
5
6
7
<?php
$aaa = 'Happy';
$bbb = 'New';
...
...
$zzz = 'Year';
?>

Нужна функция которая будет проверять наличие всех заданных переменных

PHP
1
2
3
function check($filename, '$aaa,$zzz') {
...
}

и только если все указанные переменные есть в файле возвращать true, а если хотя-бы одной из них нет — false
Читать в строку $string и использовать preg_match? Что-то типа:

PHP
1
preg_match('/(aaa|zzz)/i',$string);

Сначала preg_match_all находим все интересующие фрагменты. Потом сравниваем количество найденных имен и количество имен, которые нужно было найти. Если есть повторы, то поможет array_unique.

PHP
1
2
3
4
5
6
7
function check($file, $names) {
    preg_match_all('~$('. $names.')s*=~', $file, $matches);
 
    return count(explode('|', $names)) == count(array_unique($matches[1]));
}
 
check($text, 'aaa|bbb|zzz');



0



Понравилась статья? Поделить с друзьями:
  • Как найти какое число возвели в квадрат
  • Как можно найти адрес предприятия
  • Код события 411 kernel pnp как исправить
  • Как найти персональные данные на яндексе
  • Как составить рецензию на сайт