Dize sayısal öneki Kaldır - PHP regex

7 Cevap php

Biri güvenilir bir dize başında bir nokta ardından herhangi bir sayı, tanımak ve kaldırmak için bir regex bana yardım etmek ister misiniz? Böylece

1. Introduction

olur

Introduction

ve

1290394958595. Appendix A

olur

Appendix A

7 Cevap

Deneyin:

preg_replace('/^[0-9]+\. +/', '', $string);

Verir:

php > print_r(preg_replace('/^[0-9]+\. +/', '', '1231241. dfg'));
dfg

Voilà:

^[0-9]+\.

Ben soru kapandığını biliyorum, sadece benim iki sent:

preg_replace("/^[0-9\\.\\s]+/", "", "1234. Appendix A");

Ayrıca gibi durumlarda idare edecek başlıca nedeni, bence, en iyi çalışacak

1.2 This is a level-two heading

Tamam, bu recognize and remove any number, followed by a dot için geçerli değil, ancak örneğin, istenen dize dönecektir Ek A, bu yüzden alternatif olarak hak olabilir.

// remove everything before first space
echo trim(strstr('1290394958595. Appendix A', ' '));

// remove all numbers and dot and space from the left side of string
echo ltrim('1290394958595. Appendix A', '0123456789. ');

Sadece göz ardı, bu bir seçenek değil.

Stuff sonra dize

$string = "1290394958595. Appendix A";
$first_space_position = strpos(" ", $string);
$stuff_after_space = substr($string, $first_space_position);

Stuff sonra nokta

$string = "1290394958595. Appendix A";
$first_dot_position = strpos(".", $string);
$stuff_after_dot = substr($string, $first_dot_position);

Bir düzenli ifade için bir dize aramak için ve başka bir şey ile değiştirmek için PHP işlevi preg_replace . Bu durumda böyle bir şey istiyorum:

$mytitle = preg_replace('/^[0-9]+\. */', '', $myline);

Buyrun:

/[0-9]+\./

Onlar çok güvenilir ve hafif olarak btw, ben kesinlikle burada bir regular expression kullanmak istiyorum.

Şerefe