php 中文字符串统计、截取
这几天复习基础时,看到字符串这一章,有个题目是给文章分页! 如是就自己动手写写。本以为很简单的,结果却折腾了两天,期间老是东看西看,东做西做的,一点也不专注 //批评下自己 好在,终于弄出一个。只不过需要使用者自己传入当前的字符编码 o(╯□╰)o
这几天复习基础时,看到字符串这一章,有个题目是给文章分页!
如是就自己动手写写。本以为很简单的,结果却折腾了两天,期间老是东看西看,东做西做的,一点也不专注………… //批评下自己
好在,终于弄出一个。只不过需要使用者自己传入当前的字符编码o(╯□╰)o。网上找到的都是利用各字符编码所在ASCII码中的十六进制区间来判断汉字………… //我承认我技术不行
下边是代码。 //写完之后就来发博客,巩固、加深印象 :-D
注:每个英文字母、汉字、特殊字符不管占多少字节,我这里始终按一个字符进行处理
<span> 1</span> <span>php </span><span> 2</span> <span>header</span>("content-type:text/html; charset=utf-8"<span>); </span><span> 3</span> <span>echo</span> '<pre class="brush:php;toolbar:false">'<span>; </span><span> 4</span> <span>/*</span><span>* </span><span> 5</span> <span> * 字符串统计,每个字符按一个长度计算 </span><span> 6</span> <span> * 支持GBK,UTF8 </span><span> 7</span> <span> * 类似mb_strlen() </span><span> 8</span> <span> * @author 谭宁宁 </span><span> 9</span> <span> * @time 2012-08-05 </span><span> 10</span> <span>*/</span> <span> 11</span> <span>if</span>( !<span>function_exists</span>('strcount'<span>)) </span><span> 12</span> <span>{ </span><span> 13</span> <span>function</span> strcount(<span>$string</span>, <span>$char</span>='utf8'<span>) </span><span> 14</span> <span> { </span><span> 15</span> <span>$count</span> = <span>strlen</span>(<span>$string</span><span>); </span><span> 16</span> <span>$i</span> = 0; <span>//</span><span>当前的字节数</span> <span> 17</span> <span>$j</span> = 0; <span>//</span><span>按照字符进行累加</span> <span> 18</span> <span>while</span> (<span>$i</span>$count<span>) </span><span> 19</span> <span> { </span><span> 20</span> <span>//</span><span>英文及半角特殊字符</span> <span> 21</span> <span>if</span>(<span>ord</span>(<span>$string</span>[<span>$i</span>]) >=0 && <span>ord</span>(<span>$string</span>[<span>$i</span>]) ) <span> 22</span> { <span>$charset</span> = 'en'<span>; } </span><span> 23</span> <span>//</span><span>汉字及全角字符</span> <span> 24</span> <span>else</span> <span> 25</span> { <span>$charset</span> = <span>$char</span><span>;} </span><span> 26</span> <span> 27</span> <span>switch</span> (<span>strtolower</span>(<span>$charset</span><span>)) </span><span> 28</span> <span> { </span><span> 29</span> <span>case</span> 'gb2312': <span> 30</span> <span>case</span> 'gbk': <span> 31</span> <span>$i</span> += 1<span>; </span><span> 32</span> <span>break</span><span>; </span><span> 33</span> <span>case</span> 'utf8': <span> 34</span> <span>$i</span> += 2<span>; </span><span> 35</span> <span>break</span><span>; </span><span> 36</span> <span>case</span> 'en': <span> 37</span> <span>default</span>: <span> 38</span> <span>break</span><span>; </span><span> 39</span> <span> } </span><span> 40</span> <span>$j</span>++<span>; </span><span> 41</span> <span>$i</span>++<span>; </span><span> 42</span> <span> } </span><span> 43</span> <span>return</span> <span>$j</span><span>; </span><span> 44</span> <span> } </span><span> 45</span> <span>} </span><span> 46</span> <span>else</span> <span> 47</span> { <span>echo</span> '<p>fun strcount exists!</p>'<span>; } </span><span> 48</span> <span> 49</span> <span>/*</span><span>* </span><span> 50</span> <span> * 自定义字符串截取函数,防止mb_substr()没有开启 </span><span> 51</span> <span> * 通过用户输入的$char来判断当前汉字的字符集编码 </span><span> 52</span> <span> * @param int $start 开始的字符数 </span><span> 53</span> <span> * @param int $offest 偏移量,及从$start开始往后输出多少个字符 </span><span> 54</span> <span> * @param str $char 使用者手动输入当前的汉字符编码 </span><span> 55</span> <span> * @author 谭宁宁 </span><span> 56</span> <span> * @time 2012-08-05 </span><span> 57</span> <span>*/</span> <span> 58</span> <span>if</span>( !<span>function_exists</span>('strsub'<span>)) </span><span> 59</span> <span>{ </span><span> 60</span> <span>function</span> strsub(<span>$string</span>, <span>$start</span>=0, <span>$offest</span>=0, <span>$char</span>='utf8'<span>) </span><span> 61</span> <span> { </span><span> 62</span> <span>$count</span> = <span>strlen</span>(<span>$string</span><span>); </span><span> 63</span> <span>$rs</span> = ''<span>; </span><span> 64</span> <span>$i</span> = 0; <span>//</span><span>按字节数累计</span> <span> 65</span> <span>$j</span> = 0; <span>//</span><span>按字符数累计</span> <span> 66</span> <span>$size</span> = 1; <span>//</span><span>记录每次substr时的终止位置,汉字需要考虑gbk和utf8两种情况</span> <span> 67</span> <span>while</span> (<span>$i</span> $count<span>) </span><span> 68</span> <span> { </span><span> 69</span> <span>//</span><span>英文及半角特殊字符</span> <span> 70</span> <span>if</span>(<span>ord</span>(<span>$string</span>[<span>$i</span>]) >=0 && <span>ord</span>(<span>$string</span>[<span>$i</span>]) ) <span> 71</span> { <span>$charset</span> = 'en'<span>; } </span><span> 72</span> <span>//</span><span>汉字及全角字符</span> <span> 73</span> <span>else</span> <span> 74</span> { <span>$charset</span> = <span>$char</span><span>;} </span><span> 75</span> <span> 76</span> <span>switch</span> (<span>strtolower</span>(<span>$charset</span><span>)) </span><span> 77</span> <span> { </span><span> 78</span> <span>case</span> 'gb2312': <span> 79</span> <span>case</span> 'gbk': <span> 80</span> <span>$i</span> += 1<span>; </span><span> 81</span> <span>$size</span> = 2<span>; </span><span> 82</span> <span>break</span><span>; </span><span> 83</span> <span>case</span> 'utf8': <span> 84</span> <span>$i</span> += 2<span>; </span><span> 85</span> <span>$size</span> = 3<span>; </span><span> 86</span> <span>break</span><span>; </span><span> 87</span> <span>case</span> 'en': <span> 88</span> <span>default</span>: <span> 89</span> <span>$size</span> = 1<span>; </span><span> 90</span> <span>break</span><span>; </span><span> 91</span> <span> } </span><span> 92</span> <span> 93</span> <span>if</span>(<span>$j</span> intval(<span>$start</span>+<span>$offest</span>) && <span>$j</span> >= <span>$start</span><span>) </span><span> 94</span> <span> { </span><span> 95</span> <span>$tstart</span> = <span>intval</span>(<span>$i</span>-<span>$size</span>)+1<span>; </span><span> 96</span> <span>$rs</span> .= <span>substr</span>(<span>$string</span>, <span>$tstart</span>, <span>$size</span><span>); </span><span> 97</span> <span> } </span><span> 98</span> <span>$j</span>++<span>; </span><span> 99</span> <span>$i</span>++<span>; </span><span>100</span> <span> } </span><span>101</span> <span>return</span> <span>$rs</span><span>; </span><span>102</span> <span> } </span><span>103</span> <span>} </span><span>104</span> <span>else</span> <span>105</span> { <span>echo</span> '<p>fun strsub exists!</p>'<span>; } </span><span>106</span> <span>107</span> <span>/*</span><span>$string = '123456789汉字胡总温中文啊abcdefghijklmn·=-'; </span><span>108</span> <span>echo 'substr():',substr($string, 9, 3),'<br>'; </span><span>109</span> <span>echo '长度:',strcount($string),'<br>'; </span><span>110</span> <span>echo '截取测试:',strsub($string, 0, 11),'<br>';</span><span>*/</span> <span>111</span> <span>112</span> <span>$fileContent</span> = <span>file_exists</span>('reg.txt') ? <span>file_get_contents</span>('reg.txt') : ''<span>; </span><span>113</span> <span>114</span> <span>$count</span> = strcount(<span>$fileContent</span><span>); </span><span>115</span> <span>$page</span> = !<span>isset</span>(<span>$_GET</span>['p']) ? 1 : <span>$_GET</span>['p']; <span>//</span><span>获取当前页码,默认为1</span> <span>116</span> <span>$pagesize</span> = 350; <span>//</span><span>每页多少字符</span> <span>117</span> <span>$pagecount</span> = <span>$count</span>/<span>$pagesize</span><span>; </span><span>118</span> <span>$pagecount</span> = <span>strpos</span>(<span>$pagecount</span>, '.') ? <span>intval</span>(<span>$pagecount</span>)+1 : <span>intval</span>(<span>$pagecount</span>); <span>//</span><span>总页码,如果出现小数,那么就得+1页</span> <span>119</span> <span>$start</span> = <span>$page</span>$page-1)*<span>$pagesize</span><span>; </span><span>120</span> <span>121</span> <span>$fileContent</span> = strsub(<span>$fileContent</span>, <span>$start</span>, <span>$pagesize</span>, 'utf8'<span>); </span><span>122</span> ?> <span>123</span> <span>124</span> header> <span>125</span> <style type="text/css"> <span>126 <span>p <span>127 { margin: 10px; word-wrap: <span>break-word; border:<span>#<span>000 1px solid; padding:5px; } <span>128 <span>p a <span>129 { margin:<span> 5px; } <span>130 </style> <span>131</span> <span>header</span>> <span>132</span> <span>133</span> <p><?php <span>echo <span>$fileContent</span>; ?></p> <span>134</span> <span>135</span> <p> <span>136</span> <span>php </span><span>137</span> <span>echo</span> "共有字符:<span>$count</span> /每页 <span>$pagesize</span> 个 "<span>; </span><span>138</span> <span>echo</span> " 共 <span>$pagecount</span> 页/当前第 <span>$page</span> 页"<span>; </span><span>139</span> <span>140</span> <span>if</span>(<span>$page</span> ) <span>141</span> <span>{ </span><span>142</span> <span>echo</span> '<a>首页</a>'<span>; </span><span>143</span> <span>echo</span><span>; </span><span>144</span> <span>} </span><span>145</span> <span>else</span> <span>146</span> <span>{ </span><span>147</span> <span>$up</span> = <span>$page</span>-1<span>; </span><span>148</span> <span>echo</span> "<a href="/contentpage.php?p=1">首页</a>"<span>; </span><span>149</span> <span>echo</span> "<a href="/contentpage.php?p=<span>%24up</span><span>;%0A</span><span>150</span>%20<span>%7D%0A</span><span>151</span>%20%0A<span>152</span>%20<span>if</span>(<span>%24page</span>%20==%20<span>%24pagecount</span><span>)%0A</span><span>153</span>%20<span>%7B%0A</span><span>154</span>%20%20%20%20%20<span>echo</span><span>;%0A</span><span>155</span>%20%20%20%20%20<span>echo</span>%20">尾页</a>'<span>; </span><span>156</span> <span>} </span><span>157</span> <span>else</span> <span>158</span> <span>{ </span><span>159</span> <span>$down</span> = <span>$page</span>+1<span>; </span><span>160</span> <span>echo</span> "<a href="/contentpage.php?p=<span>%24down</span><span>;%0A</span><span>161</span>%20%20%20%20%20<span>echo</span>%20%22<a%20href=">$pagecount'>尾页</a>"<span>; </span><span>162</span> <span>} </span><span>163</span> ?> <span>164</span> </p>

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

JWT是一種基於JSON的開放標準,用於在各方之間安全地傳輸信息,主要用於身份驗證和信息交換。 1.JWT由Header、Payload和Signature三部分組成。 2.JWT的工作原理包括生成JWT、驗證JWT和解析Payload三個步驟。 3.在PHP中使用JWT進行身份驗證時,可以生成和驗證JWT,並在高級用法中包含用戶角色和權限信息。 4.常見錯誤包括簽名驗證失敗、令牌過期和Payload過大,調試技巧包括使用調試工具和日誌記錄。 5.性能優化和最佳實踐包括使用合適的簽名算法、合理設置有效期、

字符串是由字符組成的序列,包括字母、數字和符號。本教程將學習如何使用不同的方法在PHP中計算給定字符串中元音的數量。英語中的元音是a、e、i、o、u,它們可以是大寫或小寫。 什麼是元音? 元音是代表特定語音的字母字符。英語中共有五個元音,包括大寫和小寫: a, e, i, o, u 示例 1 輸入:字符串 = "Tutorialspoint" 輸出:6 解釋 字符串 "Tutorialspoint" 中的元音是 u、o、i、a、o、i。總共有 6 個元

靜態綁定(static::)在PHP中實現晚期靜態綁定(LSB),允許在靜態上下文中引用調用類而非定義類。 1)解析過程在運行時進行,2)在繼承關係中向上查找調用類,3)可能帶來性能開銷。

PHP的魔法方法有哪些? PHP的魔法方法包括:1.\_\_construct,用於初始化對象;2.\_\_destruct,用於清理資源;3.\_\_call,處理不存在的方法調用;4.\_\_get,實現動態屬性訪問;5.\_\_set,實現動態屬性設置。這些方法在特定情況下自動調用,提升代碼的靈活性和效率。

PHP和Python各有優勢,選擇依據項目需求。 1.PHP適合web開發,尤其快速開發和維護網站。 2.Python適用於數據科學、機器學習和人工智能,語法簡潔,適合初學者。

PHP在電子商務、內容管理系統和API開發中廣泛應用。 1)電子商務:用於購物車功能和支付處理。 2)內容管理系統:用於動態內容生成和用戶管理。 3)API開發:用於RESTfulAPI開發和API安全性。通過性能優化和最佳實踐,PHP應用的效率和可維護性得以提升。

PHP是一種廣泛應用於服務器端的腳本語言,特別適合web開發。 1.PHP可以嵌入HTML,處理HTTP請求和響應,支持多種數據庫。 2.PHP用於生成動態網頁內容,處理表單數據,訪問數據庫等,具有強大的社區支持和開源資源。 3.PHP是解釋型語言,執行過程包括詞法分析、語法分析、編譯和執行。 4.PHP可以與MySQL結合用於用戶註冊系統等高級應用。 5.調試PHP時,可使用error_reporting()和var_dump()等函數。 6.優化PHP代碼可通過緩存機制、優化數據庫查詢和使用內置函數。 7

PHP仍然具有活力,其在現代編程領域中依然佔據重要地位。 1)PHP的簡單易學和強大社區支持使其在Web開發中廣泛應用;2)其靈活性和穩定性使其在處理Web表單、數據庫操作和文件處理等方面表現出色;3)PHP不斷進化和優化,適用於初學者和經驗豐富的開發者。
