Intereting Posts
Не работает многозарядное выравнивание FPDF Как я могу предотвратить html-объекты с PHP DOMDocument :: saveHTML ()? PHP nodeValue strips html tags – альтернатива innerHTML? strip изображения из get_the_content () удаляет теги <p> PHP – file_get_contents () с переменной в строке? определить, использует ли пользователь прокси-сервер Несколько HTML-форм на одной странице PHP mysql запрос судить, а не эхо отменить часть Изменение конфиденциальности старых сообщений Facebook с помощью Graph API Обновить токен доступа пользователя к пользователю без вмешательства пользователя Поиск php на частичном IP-адресе, хранящемся в mysql, как unsigned int Как кэшировать динамическую страницу PHP Как заменить один цвет на другой в png 24 альфа-прозрачном изображении с помощью GD Как создать рукопожатие между веб-сервером PHP и Socket.io на сервере node.js? У меня есть массив целых чисел, как я могу использовать каждый из них в запросе mysql (в php)?

Как найти следующую строку после иглы с помощью Strpos ()

Я использую PHP strpos() чтобы найти иглу в абзаце текста. Я изо всех сил пытаюсь найти следующее слово после того, как найдена игла.

Например, рассмотрим следующий параграф.

 $description = "Hello, this is a test paragraph. The SCREENSHOT mysite.com/screenshot.jpg and the LINK mysite.com/link.html is what I want to return."; 

Я могу использовать strpos($description, "SCREENSHOT") чтобы определить, существует ли SCREENSHOT, но я хочу получить ссылку после SCREENSHOT, а именно mysite.com/screenshot.jpg . Аналогичным образом, я хочу определить, содержит ли описание LINK, а затем возвращает mysite.com/link.html .

Как я могу использовать strpos() а затем вернуть следующее слово? Я предполагаю, что это может быть сделано с RegEx, но я не уверен. Следующим словом будет «пробел после иглы, за которым следует что-нибудь, а затем пробел».

Благодаря!

Related of "Как найти следующую строку после иглы с помощью Strpos ()"

Или «старый» способ … 🙂

 $word = "SCREENSHOT "; $pos = strpos($description, $word); if($pos!==false){ $link = substr($description, $pos+strlen($word)); $link = substr($link, strpos($link, " ")); } 

Вы можете сделать это с помощью одного регулярного выражения:

 if (preg_match_all('/(SCREENSHOT|LINK) (\S+?)/', $description, $matches)) { $needles = $matches[1]; // The words SCREENSHOT and LINK, if you need them $links = $matches[2]; // Contains the screenshot and/or link URLs } 

Я провел небольшое тестирование на своем сайте, используя следующее:

 $description = "Hello, this is a test paragraph. The SCREENSHOT mysite.com/screenshot.jpg and the LINK mysite.com/link.html is what I want to return."; $matches = array(); preg_match('/(?<=SCREENSHOT\s)[^\s]*/', $description, $matches); var_dump($matches); echo '<br />'; preg_match('/(?<=LINK\s)[^\s]*/', $description, $matches); var_dump($matches); 

Я использую положительный lookbehind, чтобы получить то, что вы хотите.