876

Re: Выпадающий список

Вместо пустых квадратных скобок автоматически будут созданы последовательные идентификаторы массива. $1 - относится к регулярному выражению заключенному в скобках.

$patterns[] = '/(' . preg_quote($bold1, '/') . ')/';
$patterns[] = '/(' . preg_quote($bold2, '/') . ')/';

$replacements[] = '<b>$1</b>';
$replacements[] = '<b>$1</b>';

877

Re: Выпадающий список

Добрый вечер, подскажите пожалуйста как правильно написать выражение.
код ищет переменные из двух таблиц в масиве при нахождении двух одинаковых переменных выводится сообщение о повторе если нет повторов соответственно сообщение

<?php

include("conect.php");
$result = mysql_query("SELECT text2 FROM poisk",$db);
$myrow = mysql_fetch_array($result);
 
$a = array();
$result = mysql_query("SELECT text2 FROM poisk",$db);
while ($myrow = mysql_fetch_array($result)) {
$a[] = $myrow['text2'];
}

$result2 = mysql_query("SELECT text FROM baza",$db);
while ($myrow2 = mysql_fetch_array($result2)) {
  
      
        if (in_array('%".$myrow2["text"]."%', $a)) {
        
            
            
print"есть повтор ".$myrow2["text"]."<br> ";

        } else {
print"нету повтора ".$myrow2["text"]."<br> ";

        }
      }

 print"</td></tr></table>";
?>

возникла проблема в строке

  if (in_array('%".$myrow2["text"]."%', $a))

здесь я пытаюсь указать что нужно искать совпадение в строке тоесть первая строка имеет вид (яблоко)  строка которая с ней сравнивается имеет вид 111яблоко111 в результате хочется найти вхождение 1 строки во второй если такое есть вывести его, но чтото не выходит

878

Re: Выпадающий список

Функция in_array() ищет точное соответствие строки в массиве, там нельзя задать подстановочные символы.

Делайте обход цикла.

foreach($a as $value) {
  if (preg_match('/' . preg_quote($myrow2["text"], '/') . '/', $value)) {
    // Найдено.
  }
}

879

Re: Выпадающий список

Спасибо! получилось!

880

Re: Выпадающий список

все работает как надо только вот я не уверен что код оптимально написан, ведь цыкл foreach должен сам по себе исполнятся а мне пришлось его еще в один цыкл поместить

<?php

include("conect.php");
$result = mysql_query("SELECT text2 FROM poisk",$db);
$myrow = mysql_fetch_array($result);
 
$a = array();
$result = mysql_query("SELECT text2 FROM poisk",$db);
while ($myrow = mysql_fetch_array($result)) {
$a[] = $myrow['text2'];
}

$result2 = mysql_query("SELECT text FROM baza",$db);
$myrow2 = mysql_fetch_array($result2);
  
  do{    
       foreach($a as $value) {
  if (preg_match('/' . preg_quote($myrow2["text"], '/') . '/', $value)) {
    print"совпадает ".$myrow2["text"]."<br>";
  }
  
}
}
while($myrow2 = mysql_fetch_array($result2));
?>

881

Re: Выпадающий список

павелsimon сказал:

ведь цыкл foreach должен сам по себе исполнятся а мне пришлось его еще в один цыкл поместить

Циклы могут исполняться внутри любой конструкции, включая сами циклы.

882

Re: Выпадающий список

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

     foreach($a as $value) {
  if (preg_match('/' . preg_quote($myrow2["text"], '/') . '/', $value)) {
    print"совпадает ".$myrow2["text"]." <br>";

 

находит в одной строке 2 слова и выводит как 2 совпадения хотя должно быть 1 как сдесь быть

883

Re: Выпадающий список

наверное немного не так обяснил, у меня не получается найти в искомой строке именно ту что ищу 

искомые строки    то что в них ищем
+++229Т+++        229Т
++++29Т+++          29Т
+++++9Т+++            9Т

здесь и есть проблема в том что строка 9Т присутствует у всех 3 искомых строк как найти именно те строки что ищем

884

Re: Выпадающий список

Если вы знаете какие символы должны предварять или быть после 9Т (вместо плюсиков), или какие символы не должны предварять и не быть после 9Т, то правило сделать можно, иначе регулярное выражение действует совершенно верно и находит именно то, что в нем задано.

885

Re: Выпадающий список

вместо + могут быть любые символы в строке ,дело в том что если в строке +++229T+++   мы ищем из масива подбора строку 229T но в етом же масиве присутствуют строки 29T 9T то вывести нужно лиш строку 229T

886

Re: Выпадающий список

Тогда уберите из массива короткие строки.

887

Re: Выпадающий список

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

$a = array();
$result = mysql_query("SELECT text2 FROM poisk",$db);
while ($myrow = mysql_fetch_array($result)) {
$a[] = $myrow['text2'];
}

$result2 = mysql_query("SELECT text FROM baza",$db);
$myrow2 = mysql_fetch_array($result2);
  
  do{    
       foreach($a as $value) {
  if (preg_match('/' . preg_quote($myrow2["text"], '/') . '/', $value)) {
    print"строка  ".$myrow2["text"]." совпадает с ????<br>";
  }
  
}
}
while($myrow2 = mysql_fetch_array($result2));

в место ???? нужно вытащить из масива только как?

888

Re: Выпадающий список

павелsimon сказал:

в место ???? нужно вытащить из масива только как?

Значение в переменной $value.

889

Re: Выпадающий список

большое спасибо, не знал, потому как не совсем понял работу цикла , а именно от куда формируется переменная $value теперь понятно.

890

Re: Выпадающий список

обясните пожалуйста подробно что значит ета строка,

preg_match('/' . preg_quote($myrow2["text"], '/') . '/', $value))

тоесть пошагово ато ищу в регулярных выражениях но не все понятно

891

Re: Выпадающий список

нашол в документации

if (preg_match("/\bweb\b/", "PHP is the web scripting language of choice."))

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

 if (preg_match("/\b$myrow2['text']\b/", $value))

чтото не так у меня выходит

892

Re: Выпадающий список

и опять же таки не пойму зачем екранировать preg_quote искомую строку

893

Re: Выпадающий список

прицепил к своему варианту

(preg_match('/\b' . preg_quote($myrow2["text"], '/') . '\b/', $value))

уже лутше находит но всеже не пойму зачем здесь функция preg_quote

894

Re: Выпадающий список

павелsimon сказал:

if (preg_match("/\bweb\b/", "PHP is the web scripting language of choice."))

Выберет web, потому что это слово отделено пробелами. Если у вас искомое слово отделено пробелами, то так делать можно.

if (preg_match("/\b" . preg_quote($myrow2["text"], '/') . "\b/", $value))
павелsimon сказал:

и опять же таки не пойму зачем екранировать preg_quote искомую строку

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

В регулярных выражениях служебными считаются следующие символы: . \ + * ? [ ^ ] $ ( ) { } = ! < > | : -

895

Re: Выпадающий список

Здравствуйте, подскажите можно ли средствами php написать прелоадер страницы, есть страница на которой производится много вычислений время прощета в среднем 1 минута, можно ли как нибуть в процентном соотношении чтоли вывести цыфры окончания прощета?

896

Re: Выпадающий список

павелsimon сказал:

можно ли как нибуть в процентном соотношении чтоли вывести цыфры окончания прощета?

Не понял вопрос. Какие цифры надо вывести? Время за которое сформировалась страница на сервере?

897

Re: Выпадающий список

нет с временем понятно, имея начальное время и после прощета имея время окончания мы узнаем время прощета, но узнать время до прощета тоесть прощет начался и на стрницу вывелись цыфры до окончания прощета осталось 30 секунд или же в процентах прощет готов на 50%

898

Re: Выпадающий список

павелsimon сказал:

до окончания прощета осталось 30 секунд или же в процентах прощет готов на 50%

Это можно реализовать через Ajax, но механизм будет сложным. Первый запрос выбирает количество основных циклов, делит их, например, на 10 и запускает первый проход для 10% записей, затем данные складируются в файл или таблицу, после чего клиенту отдается "выполнено 10%", затем клиент отправляет серверу запрос на выборку следующих 10% данных и так до конца.

899

Re: Выпадающий список

Здравствуйте. подскажите как написать в регулярных выражениях в строке 


 if (preg_match('/' . preg_quote($myrow2["text"], '/') . '/', $value)) 

так чтоб на регистр не обращать внимание, ато не получается сравнить слова типа ЯбЛоко и яблоко

900

Re: Выпадающий список

Параметр i

if (preg_match('/' . preg_quote($myrow2["text"], '/i') . '/', $value))