2017-01-05 9 views
0

Я искал миллион похожих вопросов и не нашел ответа на этот конкретный сценарий.PHP как preg_match больше/меньше символов в середине текста?

Проблема:

<?php 
$text = "some words | other words"; 
$text2 = "some words > other words"; 
$text3 = "some words < other words"; 

print preg_match("/\s+\|\t/", $text); //this works, will print 'true' 
print preg_match("/\s+(<|>|\|)\t/", $text2); //never true for $text2 or $text3 
print preg_match("/\s+[<\|>]\t/", $text3); //never true for $text2 or $text3 
?> 

мне нужно что-то, что будет верно для всех 3 сценариев.

Я пробовал смотреть и смотреть вперед, и я не могу найти что-нибудь там, что работает. Мне все еще немного чужды.

+0

Эти пробелы после '<', '>' '' '' '' '' '' '' 'просто, иначе он должен печатать' 1'. – revo

+0

'\ s + [\ | \ <|\>] \ s +' будет соответствовать всем сценариям. Это то, что вы ищете? – Technomad

+1

Требуется ли пробел? Я думаю, что '\ h * [<> |] \ h +' будет работать, если требуется пустое пространство, измените '*' на '+'. – chris85

ответ

0

Я не уверен, правильно ли я понял ваш вопрос. Но если вы хотите, чтобы соответствовать |, < и >, то вы можете использовать простой регулярное выражение, как это:

[|<>] 

И если вы хотите, чтобы соответствовать пробелы и слова, то вы могли бы использовать что-то вроде этого:

\w+\s+[|<>]\s+\w+ 

Working demo

enter image description here

0

Вы, ребята, правы. Мой код уже работает. Проблема, с которой я сталкиваюсь, заключается в том, что когда есть '<' вместо '|' код больше не использует вкладку после нее, вместо этого она делает только пробелы .... что было неожиданным и трудно сказать разницу, просто глядя на нее.

Спасибо за помощь. Это было намного сложнее, чем было. Просто трудно определить разницу между пробелами и вкладками при устранении неполадок. И да, эти пробелы/вкладки должны быть там.

 Смежные вопросы

  • Нет связанных вопросов^_^