Как исправить эту строку заменить проблему PHP? - PullRequest
1 голос
/ 04 августа 2011

Я хочу заменить слова (кроме:;;. Stc.) Ссылками. Как я могу это сделать?

<?php
$string = "wordey; string, boom";
$string = preg_replace("/[^a-z]/i", "<a href='x'>/[^a-z]/i</a>", $string); //??
echo $string; // <a href='wordey'>wordey</a>; <a href='string'>string</a>, <a href='boom'>boom</a>
?>

Обратите внимание, что; . - и т. д. важны.

Ответы [ 4 ]

2 голосов
/ 04 августа 2011

Ни ваше регулярное выражение, ни строка замены не имеют смысла. Регулярное выражение соответствует всему , а не в диапазоне [a-z] (обозначается лидирующим ^), и ваша замещающая строка содержит синтаксис регулярного выражения, чего не должно быть.

Если вы пытаетесь заменить слова, ваше регулярное выражение, вероятно, должно выглядеть примерно так: /[a-z]+/i, что делает жадное совпадение без учета регистра для одной или нескольких букв.

Чтобы использовать совпавшую строку в замене, вы можете использовать \N, где N - это число, указывающее суб-совпадение, на которое вы хотите сослаться. Чтобы добавить под-совпадение, поместите скобки вокруг части регулярного выражения, на которое вы хотите сослаться. Регулярное выражение становится /([a-z]+)/i.

Соедините их, и вы получите следующее, которое, по-видимому, даст искомый результат.

$string = preg_replace("/([a-z]+)/i", "<a href='\\1'>\\1</a>", $string);

Обратите внимание, что двойной обратный слеш - это escape-последовательность, вставляющая буквенный обратный слеш в строку.

1 голос
/ 04 августа 2011

Попробуйте это:

$result = preg_replace('/([^;,\\s]+)/', '<a href="$1">$1</a>', $subject);
1 голос
/ 04 августа 2011

попробуйте это

http://sandbox.phpcode.eu/g/1eaa6.php

<?php 
$string = "wordey; string, boom"; 
$string = preg_replace("/(.*?)([^a-z]+)/i",  
"<a href='x'>$1</a>$2", $string);  
$string = preg_replace("/, (.*)/", ", <a href='x'>$1</a>", $string); 
echo $string; // <a href='wordey'>wordey</a>; <a href='string'>string</a>, <a href='boom'>boom</a> 
?>
1 голос
/ 04 августа 2011
$string = preg_replace('/(\w+)/', '<a href="\\1">\\1</a>', $string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...