|
|
|
| Подскажите где ошибка.
/// перевести слова в ссылки на поиск
$postbody="программирование в PHP"
echo preg_replace('/\b\w{3,}\b/i', '<a href="srchform.php?id_forum=1&name=\\0&numberthemes=30&srchwhere=2&id_forum=1&logic=0&send=Поиск">'.$postbody.'</a>',
$postbody);
|
Получается: программирование в PHP в программирование в PHP
Нужно каждое слово в ссылку, а не всё предложение в виде одной ссылки на поиск:
программирование в PHP
P.S Замучился уже, не получается и все... | |
|
|
|
|
|
|
|
для: kak
(28.02.2008 в 21:18)
| | Само выражение работает правильно: линки получаются у вас srchform.php?id_forum=1&name=Программирование&... и srchform.php?id_forum=1&name=PHP&...
Проблема в том, что попадает между тегами: " '.$postbody.' ". Замените это на "\\0".
PS Тот "\\0", что попал в урл, нужно бы обработать urlencode(). (и "Поиск" вконце). Для этого можно воспользоваться preg_replace_callback() или модификатором "e". | |
|
|
|
|
|
|
|
для: kasmanaft
(29.02.2008 в 06:35)
| | Спасибо, Помогаете не в первый раз : )
Часть выражения взял из Вашего примера (это то, что работает), а остальное сам, методом тыка написал вот и не пашет : )
Сейчас заменил, где Вы подсказали и все работает.
>> PS Тот "\\0", что попал в урл, нужно бы обработать urlencode(). (и "Поиск" вконце). Для этого можно воспользоваться preg_replace_callback() или модификатором "e".
А, это для чего нужно сделать, вроде все работает?
К сожалению я пока слабо понимаю, что к чему : ) | |
|
|
|
|
|
|
|
для: kak
(29.02.2008 в 11:31)
| | Гляньте тут. Доходчивее я вряд ли объясню :)
PS по спецификации положено, но браузеры и так понимают.. Другое дело, если бы в поиск могли попасть не только "буквы", но и спец. символы какие-нибудь вроде ?, & - тогда без кодирования не обойтись (и тут не следует). | |
|
|
|
|
|
|
|
для: kasmanaft
(29.02.2008 в 15:50)
| | А если вот так записать, примерно:
$text="программирование в PHP ";
echo preg_replace('/\b[а-яА-ЯёЁ]{3,}\b/i', '<a href="srchform.php?id_forum&name=\\0&numberthemes=30&srchwhere=2&id_forum&logic=0&send=\\0">\\0</a>',$text);
Не поможет? | |
|
|
|
|
|
|
|
для: kak
(29.02.2008 в 18:01)
| | Ну, это, практически, то же самое. Только в \w входят еще латинские буквы, цифры и некоторые знаки препинания (знак подчеркивания "_", может, дефис еще - не помню).. НО в URLе кириллицы быть не должно.
В общем, что-то вроде этого:
<?
function repl ($match) {
return '<a href="srchform.php?id_forum=1&name=' . urlencode($match[0]) .
'&numberthemes=30&srchwhere=2&id_forum=1&logic=0&send=' .
urlencode("Поиск") . '">'.$match[0].'</a>';
}
echo preg_replace_callback ('/\b\w{3,}\b/', 'repl', $postbody);
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(29.02.2008 в 19:07)
| | Спасибо, Понял немного
Вобщем если код страницы посмотреть, то слово "программирование" в url приняло вид: %EF%F0%EE%E3%F0%E0%EC%EC%E8%F0%EE%E2%E0%ED%E8%E5
Вот так и должно быть. Верно? | |
|
|
|
|
|
|
|
для: kak
(29.02.2008 в 22:03)
| | Угу. | |
|
|
|
|
|
|
|
для: kasmanaft
(29.02.2008 в 22:12)
| | Спасибо за помощь Kasmanaft | |
|
|
|