matches
пытается сопоставить выражение со всей строкой и неявно добавить ^
в начале и $
в конце вашего шаблона, то есть не будет искать подстроку. Следовательно, выход этого кода:
public static void main(String[] args) throws ParseException {
Pattern p = Pattern.compile("\\d\\d\\d");
Matcher m = p.matcher("a123b");
System.out.println(m.find());
System.out.println(m.matches());
p = Pattern.compile("^\\d\\d\\d$");
m = p.matcher("123");
System.out.println(m.find());
System.out.println(m.matches());
}
/* output:
true
false
true
true
*/
123
является подстрокой a123b
, поэтому метод find()
выводит true. matches()
только «видит» a123b
, который не совпадает с 123
и, следовательно, выводит false.
Для отображения более одного пробела в большинстве веб-браузеров используйте
вместо обычных пробелов.
echo "<p>Hello punt"; // This will render as Hello Punt (with 4 white spaces)
echo "<p> Hello punt"; // This will render as Hello punt (with one space)
Для отображения данных в необработанном формате (с точным количеством пробелов и "энтер") используйте тег HTML .
echo "<pre>Hello punt</pre>"; //Will render exactly as written here (8 white spaces)
Или вы можете использовать какой-нибудь CSS для стилизации текущего блока, чтобы не разрывать текст и не отделять пробелы (не знаю, как это сделать)
В любом случае вывод будет одинаковым, но браузер сам отделяет двойные пробелы и отображает их как один.
PHP (обычно) генерирует вывод HTML для веб-сайта.
При отображении HTML браузер (обычно) сворачивает все пробелы в тексте в одно пространство. Иногда между тегами он даже сводит пробелы к нулю.
Чтобы заставить браузер отображать пробелы, вам необходимо включить специальные теги, такие как
или
, в ваш HTML-код, чтобы добавить неразрывные пробелы или новые строки, соответственно.
это для отображения? если это так, вам действительно следует подумать о том, чтобы отделить отображение от логики и использовать таблицы стилей для форматирования. будучи серверным php, действительно должен позволять предоставлять и принимать данные. хотя вы, безусловно, могли бы использовать php для выполнения того, о чем просите, я твердо верю в то, что отображение и логика должны быть максимально разделены. со стилями вы можете выполнять весь набор текста.
предоставляют оболочки и стиль выходного класса соответственно.
pre - ваш друг.
<pre>
<?php // code goes here
?>
</pre>
Или вы можете «Просмотреть исходный код» в своем браузере. (Ctrl + U для большинства браузеров.)
<?php
echo "<p>hello\n";
echo "world</p>";
echo "\n\n";
echo "<p>\n\tindented\n</p>\n";
echo "
<div>
easy formatting<br />
across multiple lines!
</div>
";
?>
<p>hello
world</p>
<p>
indented
</p>
<div>
easy formatting<br />
across multiple lines!
</div>
вы можете использовать тег
, чтобы предотвратить объединение нескольких пробелов и переносов строк в один. Или вы можете использовать
для обычного пробела (неразрывный пробел) и
(или
) для разрывов строк.
Но не делайте
просто используйте тег
и настройте поля с помощью CSS.
<p style="margin-top: 20px;">Some copy...</p>
Тем не менее, вы должны определять стили глобально, а не встроенными, как я сделал в этом примере.
Когда вы выводите строки из PHP, вы можете использовать «\ n» для новой строки и «\ t» для табуляции.
<?php echo "This is one line\nThis is another line"; ?>
Хотя такие флаги, как \ n или \ t, работают только в двойных кавычках ("), а не в одинарных кавычках (').
, чтобы ваш код выглядел лучше при просмотре исходного кода
$variable = 'foo';
echo "this is my php variable $variable \n";
echo "this is another php echo here $variable\n";
ваш код, когда исходный код будет выглядеть, с красивой строкой, возвращаемой благодаря \ n
this is my php variable foo
this is another php echo here foo