SeoNk

Рейтинг
84
Регистрация
04.07.2013
ps axf:
<?php

$string = " Я не поеду в Москву. Москва замечательный город, но цены в Москве очень высокие.";
$array = array ( 1 => "Москве", 2 => "Москвой", 3 => "Москва", 4 => "Столица России");
array_map('preg_quote', $array);
$preg = '/('.join('|', $array).')/';
$string = preg_replace($preg, "<b>$1</b>", $string, 1);
echo $string;


upd: http://sandbox.onlinephpfunctions.com/code/66c62fab083136ad25d01e7f4958b1ae9672a6fb

Гениально! Спасибо!!!

Огромное спасибо! Отлично работает!

Подскажите пожалуйста, как доработать эту функцию:

дело в том что если строка имеет вид:

$string = "Голосовой работает на базе технологии <a href=\"/помощник.html\">помощник</a> нейронных сетей помощник, голосовой помощник работает".

то после обработки она:

Голосовой работает на базе технологии <a href="/помощник.html">помощник</a> нейронных сетей <a href="/помощник.html">помощник</a>, голосовой помощник работает.

Т.е. на слово помощник 2 ссылки.

Мне нужно чтобы регулярка проверяла, что между тегами <a></a> "помощник" не единственное слово и если слово в тегах единственное, то замена не производится совсем! Чтобы не было одинаковых ссылок на странице..

С П А С И Б О

разобрался, спасибо!

Mobiaaa:
В выводе $ netstat -tlpn
Нет запущенных процессов на 80 порту, следовательно веб сервер не работает

Пожалуйста подскажите как запустить эти процессы?

я пробовал:

sudo iptables -I INPUT -p tcp -m tcp --dport 80 -j ACCEPT

sudo firewall-cmd --zone=public --add-port=80/tcp --permanent

Раньше этого было достаточно. Не знаю что произошло

Почему? Что в этом плохого? Адресная строка смотрится более естественно и читабельнее. Кстати проблема решена. У меня не получалось потому что я не тот файл редактировал. По глупости короче.

Отправлено с моего SM-T231 через Tapatalk

Sitealert:
/^([^\r\n\t]+)$/mg

Спасибо! То что нужно!

Sitealert:
/^([\s\S]*)$/g


Пожалуйста.

Спасибо но немножко не то. С этим рег.выражением он выводит:

<p>Строка 1

Строка 2

Строка 3</p>

А мне нужно:

<p>Строка 1</p>

<p>Строка 2</p>

<p>Строка 3</p>

Помогите доработать!

Sitealert:
Так Вам ещё вчера, почти сразу же дали решение, надо было его только прочитать и использовать
$text ="текст [45] текст [78] текст [31] текст [19] текст";


$array = array(
19 => "<img src='19.jpg'>",
24 => "<img src='24.jpg'>",
45 => "<img src='45.jpg'>",
78 => "<img src='78.jpg'>",
);


foreach($array as $key => $value){
$text = str_replace ("[$key]",$value,$text);
}

echo $text;

аа. я думал можно как то без цикла обойтись. теперь понятно, спасибо

Одну минуту..

Я правильно понимаю что мы в тесте заставляем выполняться этот код 100 000 раз и это занимает меньше секунды?

Если это так, то мне кажется такая нагрузка вообще пренибрежимо мала (скрип будет выполняться 1 раз при запросе) и тут особо нет разницы что использовать

silicoid:
Прикол.
Вариант с foreach и str_replace работает в 5 раз быстрее, чем strtr

Спасибо!

Я скопировал ваш код и вот мои результаты:

время выполнения 1 0.28654098510742 секунд

время выполнения 2 0.8086371421814 секунд

Поменял местами:

время выполнения 2 0.81029081344604 секунд

время выполнения 1 0.25031208992004 секунд

Интересно, почему у нас с вами такая разница?

---------- Добавлено 06.04.2017 в 17:31 ----------

Joker-jar:
Потому что надо передавать одним параметрам ключи, а другим - значения. Если имеем в распоряжении массив как в стартпосте.

Я правильно понимаю что можно это сделать с помощью функции str_replace без использования цикла?

Никак не соображу что нужно сделать. Конечно хотелось бы наиболее производительный код..

Вот что у меня получается:

$text ="текст [45] текст [78] текст [31] текст [19] текст";

$array1 = array(

1 => "[45]",

2 => "[78]",

3 => "[31]",

4 => "[19]",

);

$array2 = array(

19 => "<img src=\"19.jpg\">",

24 => "<img src=\"24.jpg\">",

45 => "<img src=\"45.jpg\">",

78 => "<img src=\"78.jpg\">",

);

$newphrase = str_replace($array1, $array2, $text);

echo $newphrase;

результат:

текст <img src="19.jpg"> текст <img src="24.jpg"> текст <img src="45.jpg"> текст <img src="78.jpg"> текст

---------- Добавлено 06.04.2017 в 17:33 ----------

Sitealert:
А чем str_replace не устраивает? Этот вариант работает с Вашим исходным массивом.

Не устраивает только одном: я никак не соображу как с помощью него это сделать!

Всего: 191